<?php
/**
 *配置设置和获取函数
 *@param string $name 配置变量
 *@param mixed 配置值
 *@return array|null
 */
function C($name=null, $value=null){
	static $config = array();
	$cur = &$config;
	if(is_null($name) || empty($name))
		return $config;
	if(!is_string($name))
		return null;
	$name = explode('.', $name);
	//寻址到指定数组
	while(count($name) > 1){
		$key = array_shift($name);
		if(is_array($cur) && array_key_exists($key, $cur)){
			$cur = &$cur[$key];
			continue;
		}
		return;
	}

	//设置值
	$key = array_shift($name);
	if((!is_null($value)) && is_array($cur)){
		$cur[$key] = $value;
		return;
	}

	//取值
	if(is_array($cur) && array_key_exists($key, $cur)){
		return $cur[$key];
	}
	return;
}
/**
 *自动加载类文件
 *具体就是会自动便利classpath 然后从中找出类文件
 *@param string $name 文件路径后者类名
 *@param bool $add 值为真时添加路径
 *@return null
 */
function dynamic_load($name=null, $add=false){
	static $_classpath = array();
	if(empty($name))
		return;
	//如果是文件就加载到claspath中
	if(is_dir($name) && $add){
		//加载路径到classpath
		$_classpath[] = $name;
		return;
	}
	//遍历classpath搜寻类文件
	$filename = strtolower($name.'.class.php');
	foreach ($_classpath as $path) {
		if(file_exists($path.DS.$filename)){
			include($path.DS.$filename);
		}
	}
}
/**
 *生成url地址
 *@param string $r 形式地址
 *@param array $para 参数数组
 *@return string 完整地址
 */
function U($r=null, $para = array()){
	$url = C('env.domain');
	if(is_null($r))
		return $url;
	//重写
	if(C('env.rewrite')){
		$url .= '/'.$r.'.html';
	}else{
		$url .= '/index.php';
		$sub = explode('/', $r);
		$keys = array('app', 'c', 'a');
		for ($i=0; $i < count($sub); $i++) { 
			$para[$keys[$i]] = $sub[$i];
		}
	}
	if(count($para) > 0){
		$url .= '?';
		foreach ($para as $key => $value) {
			$url .= $key.'='.$value.'&';
		}
		//去掉最后一个& 其实不去掉也没关系
		$url = substr($url, 0, strlen($url)-1);
	}
	return $url;
}
//获取static目录的资源文件
function R($r=null){
	if(is_null($r)){
		return C('env.domain').'/static/';
	}
	return C('env.domain').'/static/'.$r.'/';
}

function cookie($var, $value, $life = 0) {
	global $_SERVER;
	$cookiedomain = '';
	$cookiepath = C('env.cookiepath');
	$timestamp = time();
	setcookie($var, $value,
		$life ? $timestamp + $life : 0, $cookiepath,
		$cookiedomain, $_SERVER['SERVER_PORT'] == 443 ? 1 : 0);
}
//Hook简要方法
function add_action($hook, $function, $priority=0){
	return Hook::add_action($hook, $function, $priority);
}

function do_action($hook, $params=null){
	return Hook::do_action($hook, $params);
}

/*
 *和c方法一样 如法炮制
 */

function session($name=null, $value=null){
	global $_SESSION;
	$cur = &$_SESSION;
	if(is_null($name) || empty($name))
		return $_SESSION;
	if(!is_string($name))
		return null;
	$name = explode('.', $name);
	//寻址到指定数组
	while(count($name) > 1){
		$key = array_shift($name);
		if(is_array($cur) && array_key_exists($key, $cur)){
			$cur = &$cur[$key];
			continue;
		}
		return;
	}

	//设置值
	$key = array_shift($name);
	if((!is_null($value)) && is_array($cur)){
		$cur[$key] = $value;
		return;
	}

	//取值
	if(is_array($cur) && array_key_exists($key, $cur)){
		return $cur[$key];
	}
	return;
}

function is_login(){
	if(Authhelper::auth()){
		return true;
	}
	return false;
}

function is_admin(){
	if(Authhelper::auth()){
		$c_uid = session('user.uid');
		if($c_uid == C('env.adminuid')){
			return true;
		}
		return false;
	}
	return false;
}